import '@/styles/common.scss'

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from './router'
// 监听函数 是否进入自定义指令出现的区域
import { useIntersectionObserver } from '@vueuse/core'

const app = createApp(App)

// 创建Pinia实例，并将其赋值给app.use
app.use(createPinia())
// 使用router中间件，并将其赋值给app.use
app.use(router)

app.mount('#app')

// 定义自定义全局指令 实现图片懒加载
// 指令完整写的时候为 v-img-lazy
app.directive('img-lazy', {
    mounted(el, binding) { 
        // el: 指令绑定的那个元素 img
        // binging: binding.value 指令后边绑定的值 img.url
        console.log(el, binding);
        useIntersectionObserver(
            el,
            // isIntersecting 是否出现 true or false
            ([{ isIntersecting }]) => {
                console.log(isIntersecting);
                if (isIntersecting) {
                    // 进入图片视口区域
                    // 浏览器看到src会自动发起请求资源
                    el.src = binding.value
                }
            }
        ) 
    }
})
